package com.itlong.cloud.property.dao;

import com.itlong.cloud.POJO.PO.PropertyGroupPO;
import com.itlong.cloud.abstracts.IAbstractBaseDao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      物业系统部门信息数据访问接口
 * </desc>
 *
 * @craeteDate 2017/10/17
 */
@Mapper
@Repository
public interface IPropertyGroupDao extends IAbstractBaseDao<PropertyGroupPO>{
    /**
     * <desc>
     *      保存部门
     * </desc>
     *
     * @param params 数据参数
     * @return
     * @author Biao.R
     * @createDate 2017/10/17
     */
    Integer save(Map<String, Object> params);

    /**
     * <desc>
     *      修改部门
     * </desc>
     *
     * @param params 数据参数
     * @return
     * @author Biao.R
     * @createDate 2017/10/17
     */
    Integer update(Map<String, Object> params);

    /**
     * <desc>
     *      获取分页数据集
     * </desc>
     *
     * @param params  查询参数
     * @return
     * @author Biao.R
     * @createDate 2017/10/17
     */
    List<PropertyGroupPO> getPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取分页总数量
     * </desc>
     *
     * @param params 查询参数
     * @return
     * @author Biao.R
     * @createDate 2017/10/17
     */
    Integer getPageCount(Map<String, Object> params);

    /**
     * <desc>
     *      获取最大编号
     * </desc>
     * @param   projectId   操作的小区Id
     * @return 最大编号
     * @author Biao.R
     * @createDate 2017/10/17
     */
    String getMaxNum(@Param("projectId") String projectId);

    /**
     * <desc>
     *      删除用户的角色
     * </desc>
     *
     * @param userIds   用户id数组
     * @param groupId    部门id
     * @return
     * @author Biao.R
     * @createDate 2017/10/17
     */
    Integer deleteGroupUsers(@Param("userIds") String[] userIds, @Param("groupId") String groupId);

    /**
     * <desc>
     *      保存用户的角色
     * </desc>
     *
     * @param params 数据参数map
     * @return
     * @author Biao.R
     * @createDate 2017/10/17
     */
    Integer saveGroupUsers(Map<String, Object> params);


    /**
     * <desc>
     *      根据条件参数查找部门信息
     * <desc/>
     * @param  params   参数集
     * @return  List<PropertyGroupPO>
     * @author Biao.R
     * @createDate 2017/10/17
     */
    List<PropertyGroupPO> getByParams(Map<String, Object> params);

    /**
     * <desc>
     *      根据条件参数查找符合条件的部门的所有员工数
     * <desc/>
     *
     * @param  params   参数集
     * @return  List<PropertyGroupPO>
     * @author wangzhi
     * @createDate 2019/12/24
     */
    String getAllGroupUserCount(Map<String, Object> params);
}
